小編曾介紹過 CSS 的設計模式,這篇就讓小編開箱那些年小編曾體驗過的 CSS 主流框架:
大家在寫 CSS 的過程,應該都會經歷幾個階段:
就好像女孩子剛學化妝的時候
可以不改到 style sheet 避免把東西改壞但還是可以修改畫面的方法
Tailwind CSS 把所有可能會用到的樣式都寫成一個 Class,使用 Tailwind CSS,基本可以不用再寫 css,壞處是 html 標籤的 class 會很長。
也許有人會說那這包不就很大且一堆功能沒用到? 所以在打包的時候需要使用 purge css。
<figure class="md:flex bg-slate-100 rounded-xl p-8 md:p-0 dark:bg-slate-800">
<img
class="w-24 h-24 md:w-48 md:h-auto md:rounded-none rounded-full mx-auto"
src="/sarah-dayan.jpg"
alt=""
width="384"
height="512"
/>
<div class="pt-6 md:p-8 text-center md:text-left space-y-4">
<blockquote>
<p class="text-lg font-medium">
“Tailwind CSS is the only framework that I've seen scale on large teams.
It’s easy to customize, adapts to any design, and the build size is
tiny.”
</p>
</blockquote>
<figcaption class="font-medium">
<div class="text-sky-500 dark:text-sky-400">Sarah Dayan</div>
<div class="text-slate-700 dark:text-slate-500">
Staff Engineer, Algolia
</div>
</figcaption>
</div>
</figure>
輕量化、簡單、易用
分成了 6 種模組,每個模組都是獨立的 CSS 檔案,可以依需求載入需要的模組,不需要太多工具就可以直接使用的一套 CSS 框架。
可以從原始碼發現結構與樣式分離 (OOCSS)
.pure-button {
/* Structure */
display: inline-block;
line-height: normal;
white-space: nowrap;
vertical-align: middle;
text-align: center;
cursor: pointer;
-webkit-user-drag: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
/* 樣式 */
.pure-button-primary,
.pure-button-selected,
a.pure-button-primary,
a.pure-button-selected {
background-color: rgb(0, 120, 231);
color: #fff;
}
原始碼: https://unpkg.com/purecss@2.1.0/build/buttons.css
Bootstrap 的樣式很難去客製化一個自己新的樣子,頂多依照開發指南去蓋掉一些變數。
如果一個專案,需要快速或者簡單交付,那就不一定要用 Tailwind CSS,用 Bootstrap 真的方便快速。
Bootstrap 也包含 OOCSS 的概念,從以下範例可以看出來什麼是容器與內容分離
/* 未分離 */
.col {
/* 樣式內容 */
}
.col .btn {
/* 樣式內容 */
}
/* 容器與內容分離 */
.col {
/* 樣式內容 */
}
.btn {
/* 樣式內容 */
}
<div class="col">
<button class="btn">button</button>
</div>
Bootstrap 也有常用的一些 css 屬性部分做 Atomic CSS (原子化樣式) 的設計
.my-auto {
margin-top: auto !important;
margin-bottom: auto !important;
}
.mt-0 {
margin-top: 0 !important;
}
.mt-1 {
margin-top: 0.25rem !important;
}
.mt-2 {
margin-top: 0.5rem !important;
}
.mt-3 {
margin-top: 1rem !important;
}
推薦 animate.css 也有提供 custom build 的功能。
主要也是原子化樣式 (Atomic CSS) 的概念,以動畫 delay 秒數為例:
animate__delay-2s
-> 延遲 2sanimate__delay-3s
-> 延遲 3sanimate__delay-4s
-> 延遲 4sanimate__delay-5s
-> 延遲 5s
<div class="animate__animated animate__bounce animate__delay-2s">Example</div>